/************************* 版权声明 *********************************
 * 
 * 版权所有：Apache License 2.0
 * 
 ************************* 版本声明 *********************************
 *@since jdk1.5
 *@version 0.1
 ************************* 变更记录 *********************************
 *
 * 创建者：bijiqiang Email:bijiqiang@gmail.com   创建日期： 2009-12-17
 * 创建记录：创建类结构。
 * 
 * 修改者：       修改日期：
 * 修改记录：
 *
 * 修改者：       修改日期：
 * 修改记录：
 * ……
 ************************* To  Do *********************************
 *
 * 1、实现所有未实现的方法（抛出UnsupportedOperationException的方法）。
 * 
 ************************* 随   笔 *********************************
 *
 * 
 * 
 ******************************************************************
 */

package com.realgodo.site.service.application;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springside.modules.orm.Page;
import org.springside.modules.orm.hibernate.DefaultEntityManager;

import com.realgodo.site.entity.application.topic.Topic;
import com.realgodo.site.entity.space.Space;

@Service("topicManager")
@Transactional
public class TopicManager extends DefaultEntityManager<Topic, Long> {

	@Autowired
	protected SessionFactory sessionFactory;

	/**
	 * 保存转贴
	 * 
	 * @param topic
	 * @param space
	 * @return
	 */
	public Topic saveTopic(Topic topic, Space space) {
		topic.setClasz(Topic.class);
		topic.setSpace(space);
		return (Topic) this.entityDao.saveMerge(topic);
	}

	/**
	 * 获得我的转贴
	 * 
	 * @param list
	 * @param space
	 * @return
	 */
	public Page<Topic> getMyTopic(Page<Topic> list, Space space) {
		Session session = this.sessionFactory.getCurrentSession();
		Criteria criteria = session.createCriteria(Topic.class);

		criteria.add(Restrictions.eq("space.id", space.getId()));
		criteria.addOrder(Order.desc("pubTime"));

		return super.getEntityDao().findByCriteria(list, criteria);
	}

	/**
	 * 获取我的好友的转贴
	 * 
	 * @param list
	 * @param space
	 * @return
	 */
	public Page<Topic> getFriendsTopics(Page<Topic> list, Space space) {
		return null;
	}
	
	/**
	 * 获取热门转帖
	 * @param list
	 * @return
	 */
	public Page<Topic> getHotTopic(Page<Topic> list){
		Session session = this.sessionFactory.getCurrentSession();
		Criteria criteria = session.createCriteria(Topic.class);
		
		criteria.addOrder(Order.desc("hit"));
		return super.getEntityDao().findByCriteria(list, criteria);
	}
}
